package Clases;

import Clases.Usuario;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Datos {

    private Connection cnn;

    public Datos() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String db = "jdbc:mysql://localhost/confeccionarte";
            cnn = DriverManager.getConnection(db, "root", "");
        } catch (Exception ex) {
            Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void cerrarConexion() {
        try {
            cnn.close();
        } catch (SQLException ex) {
            Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public String validarUsuario(String usuario, String clave) {
        try {
            String sql = "select idperfil from usuarios where idusuario = '" + usuario + "' and clave = '" + clave + "'";
            Statement st = cnn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                return rs.getString("idperfil");
            } else {
                return "NOk";
            }
        } catch (SQLException ex) {
            Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            return "NOk";
        }
    }
    //Boton Consultar
    public Usuario getUsuario(String idusuario) {
        try {
            Usuario miUsuario = null;
                            
            String sql = "select * from usuarios where idusuario = '" + idusuario + "'";
            Statement st = cnn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                miUsuario = new Usuario(
                            rs.getString("idusuario"),rs.getString("nomusuario"),
                            rs.getString("clave"),rs.getString("idperfil"));
            }    
            return miUsuario;
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
        
    public void newUsuario(Usuario miUsuario){
        try {
            String sql = "insert into usuarios values ('"+ miUsuario.getIdusuario() + "', '"
                    + miUsuario.getNombres() + "', '" + miUsuario.getClave() + "', '"
                    + miUsuario.getPerfil() + "')";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    
    public void updateUsuario(Usuario miUsuario){
        try {
            String sql = "update usuarios set nomusuario = '" + miUsuario.getNombres() + "', "
                    + "clave = '" + miUsuario.getClave() + "', " + "idperfil = '" + miUsuario.getPerfil() + "'"
                    + "where idusuario = '" + miUsuario.getIdusuario() +  "'";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    
    
    public void deleteUsuario(String idusuario) {
        try {
                            
            String sql = "delete from usuarios where idusuario = '" + idusuario + "'";
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);
            
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
         }
    }
    
    public ResultSet getUsuarios() {
        try {
            Usuario miUsuario = null;
                            
            String sql = "select * from usuarios ";
            Statement st = cnn.createStatement();
            return st.executeQuery(sql);
            
        } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
    
    
    //MATERIA PRIMA
    
    //Boton Consultar
    public materiausuario getMateriaPrima(String codigo) {
        try {
            materiausuario miUsuario = null;
                            
            String sql = "select * from materiasprimas where codigo = '" + codigo + "'";
            Statement st = cnn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                miUsuario = new materiausuario(
                            rs.getString("codigo"),rs.getString("color"),
                            rs.getString("tipo"),rs.getString("unidadmedida"),rs.getString("descripcion"));
            }    
            return miUsuario;
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
        
    public void newMateriaPrima(materiausuario miUsuario){
        try {
            String sql = "insert into materiasprimas values ('"+ miUsuario.getcodigo() + "', '"
                    + miUsuario.getcolor() + "', '" + miUsuario.gettipo() + "', '"
                    + miUsuario.getunidadmedida() + "', '" + miUsuario.getdescripcion() + "')";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    
    public void updatemateriausuario (materiausuario miUsuario){
        try {
            String sql = "update materiasprimas set color = '" + miUsuario.getcolor() + "', "
                    + "tipo = '" + miUsuario.gettipo() + "', " + "unidadmedida = '" + miUsuario.getunidadmedida() + "', "+ "descripcion= '" + miUsuario.getdescripcion() + "', " 
                    + "where codigo = '" + miUsuario.getcodigo() +  "',";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    
    public void deletemateriaprima(String codigo) {
        try {
                            
            String sql = "delete from materiasprimas where codigo = '" + codigo + "'";
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);
            
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
         }
    }
    
     public ResultSet getMateriaPrima() {
        try {
            materiausuario miUsuario = null;
                            
            String sql = "select * from codigo ";
            Statement st = cnn.createStatement();
            return st.executeQuery(sql);
            
        } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
    
    
    
    public ResultSet materiausuario() {
        try {
            materiausuario micodigo = null;
                            
            String sql = "SELECT * FROM `materiasprimas`";
            Statement st = cnn.createStatement();
            return st.executeQuery(sql);
            
        } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
    
    public procesousuario getOrdenproduccion(String nordenproduccion) {
        try {
            procesousuario miUsuario = null;
                            
            String sql = "select * from ordenproduccion where nordenproduccion = '" + nordenproduccion + "'";
            Statement st = cnn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                miUsuario = new procesousuario(
                            rs.getString("nordenproduccion"),rs.getString("idcliente"),
                            rs.getString("fecha1"),rs.getString("fecha2"),rs.getString("fecha3"),rs.getString("nprendas"),rs.getString("nproceso"));
            }    
            return miUsuario;
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
     public void newOrdenproduccion(procesousuario miUsuario){
        try {
            String sql = "insert into ordenproduccion values ('"+ miUsuario.getnordenproduccion() + "', '"
                    + miUsuario.getidcliente() + "', '" + miUsuario.getfecha1() + "', '"
                    + miUsuario.getfecha2() + "', '" + miUsuario.getfecha3() + "', '"
                    + miUsuario.getnprendas() + "', '" + miUsuario.getnproceso() + "')";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
     public void updateOrdenproduccion(procesousuario miUsuario){
        try {
            String sql = "update ordenproduccion set idcliente = '" + miUsuario.getidcliente() + "', "
                    + "fecha1 = '" + miUsuario.getfecha1() + "', " + "fecha2 = '" + miUsuario.getfecha2() + "', "+ "fecha3= '" + miUsuario.getfecha3() + "', " 
                    + "nprendas = '" + miUsuario.getnprendas() + "', "+ "nproceso= '" + miUsuario.getnproceso() + "', " 
                    + "where codigo = '" + miUsuario.getnordenproduccion() +  "',";
            
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);  
            } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
     
     
     public void deleteOrdenproduccion(String nordenproduccion) {
        try {
                            
            String sql = "delete from ordenproduccion where nordenproduccion = '" + nordenproduccion + "'";
            Statement st = cnn.createStatement();
            st.executeUpdate(sql);
            
           } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
         }
    }
     
      public ResultSet Ordenproduccion() {
        try {
            procesousuario micodigo = null;
                            
            String sql = "SELECT * FROM `ordenproduccion`";
            Statement st = cnn.createStatement();
            return st.executeQuery(sql);
            
        } catch (SQLException ex) {
           Logger.getLogger(Datos.class.getName()).log(Level.SEVERE, null, ex);
           return null;
        }
    }
     
     
     
}


